#ifndef GY_GRAPHICSPOLYGON_H
#define GY_GRAPHICSPOLYGON_H

#include "Graphics/BasicGraphics/GY_BasicsGraphicsObject.h"
#include "Graphics/GY_Object.h"
#include "GY_ControlLibrary_global.h"
#include <QGraphicsPolygonItem>
#include <QObject>
#include <QPointF>
#include <QVector>
#include <QVariant>
#include <QDebug>
#include <QColor>
#include <QPen>

using namespace std;

class GY_CONTROLLIBRARY_EXPORT GY_GraphicsPolygon : public GY_BasicsGraphicsObject
{
    Q_OBJECT
public:
    explicit Q_INVOKABLE GY_GraphicsPolygon(const QString &guid,QGraphicsItem *parent = nullptr);
    explicit Q_INVOKABLE GY_GraphicsPolygon(const QString &guid,
                                 const QVector<QPointF> &PtsArray,
                                 const int Capacity,
                                 const int Size,
                                 QGraphicsItem *parent = nullptr);
    ~GY_GraphicsPolygon();
    //继承基类拷贝重写
    GY_Object * copyItem(const QString &guid = QString()) override;

private:
    /**
     * @brief updateCapacity 更新点数容量（范围0~9999）
     * @param name
     * @param value
     * @return
     */
    bool updateCapacity(const QString &name,const QVariant &value);
    /**
     * @brief updateSize 更新点数（范围0~9999）
     * @param name
     * @param value
     * @return
     */
    bool updateSize(const QString &name,const QVariant &value);
    /**
     * @brief updatePtsArray 更新点位置
     * @param name
     * @param value
     * @return
     */
    bool updatePtsArray(const QString &name,const QVariant &value);
    /**
     * @brief updateAddPointAfter 在所选点前新增点
     * @param name
     * @param value
     * @return
     */
    bool updateAddPointAfter(const QString &name,const QVariant &value);
    /**
     * @brief updateAddPointBefore 在所选点后新增点
     * @param name
     * @param value
     * @return
     */
    bool updateAddPointBefore(const QString &name,const QVariant &value);
    /**
     * @brief updateRemovePoint 删除所选点
     * @param name
     * @param value
     * @return
     */
    bool updateRemovePoint(const QString &name,const QVariant &value);
    /**
     * @brief updateDraw 更新图形绘制
     */
    void updateDraw();
    /**
     * @brief initializationPropertyInfo 初始化信息
     */
    void initializationPropertyInfo();
signals:

private:


};

#endif // GY_GRAPHICSPOLYGON_H
